As a system for storing large-scale data from a host apparatus, a storage apparatus which controls data I/Os from the host apparatus is used. The storage apparatus is a device for managing a multiplicity of drives arranged as an array as a RAID (Redundant Arrays of Independent Disks or Redundant Arrays of Inexpensive Disks). The physical storage area which is provided by a multiplicity of drives contained in the storage apparatus is formed having at least one or more logical areas (hereinafter these areas will sometimes also be referred to as logical volumes) and the logical volumes are provided to the host apparatus.
In order to store large-scale data from the host apparatus, the storage apparatus holds a large-scale storage area, but due to the continuing increase of data from the host apparatus and due to problems with the size and cost of the storage apparatus, there is a need for efficient storage of large-scale data. Therefore, a reversible data compression system which, while still retaining the amount of information of a substantial quality in the data, makes it possible to reduce the amount of data and enables substitution for other data of a small size, has been applied to storage apparatuses (for example, PTL1).
As one example of a data compression system which is applied to storage apparatuses, a sliding dictionary-type data compression system known as the LZ77 compression coding system exists. This system searches a dictionary based on an input data string which has previously undergone coding and a data string in the dictionary which has been subjected to compression processing is maintained as is. Further, this compression system determines whether a data pattern in the input data in the current compression processing exists in the dictionary, and if such a data pattern exists, utilizes the data length which matches the position as a code value and substitutes the data using this code value.